package com.crm.service;

import com.crm.model.User;

import java.util.List;

/**
 * @author <a href="mailto:huang0510@hotmail.com">HuangHuang</a>
 * @version 1.0
 */
public interface IUserService {

    public boolean createUser(User user);

    public boolean alterUser(User user);

    public User getUserById(String id);

    public User getUserByNameAndPwd(String username, String password);

    public User getUserByCode(String code);

    public List getUserByGroup(String userGroup);


    /**
     * 删除一个用户。
     *
     * @param u 用户
     */
    void deleteUser(User u);

    /**
     * 产生一个16位的用户识别码。第一二位表示年，三四位表示月，五六位表示日，七八
     * 位表示小时，九十位表示分钟，十一十二位表示秒，最后四位表示用户编码数量，如
     * 果删除用户，最后四位的编码有可能会出现断码。<br>
     * 在服务器运行期间，用户识别码后缀编码被缓存，可直接使用。当服务器重启后，用
     * 户识别码后缀编码回复为初始值，此时需检查数据库用户识别码最大值，在其基础上递增。
     *
     * @return String 返回一个16位的用户识别码。
     */
    String generateUserCode();

    /**
     * 获得系统所有用户列表
     *
     * @return 返回系统所有用户列表
     */
    List<User> getUsers();

    /**
     * 获得除某个用户之外的系统用户列表。
     *
     * @return 返回不包括自己的系统用户列表。 @param user 不包括的用户。
     */
    List getUsersExceptSomebody(User user);
}
